Graph analysis is an important type of data analytics where the underlying data-set is modeled as a graph. Since such a graph representation captures relationships between data entities, applying graph analysis procedures can provide valuable insight about the original data-set to the user. Examples of popular graph analysis procedures are Community Detection, PageRank, Shortest Path Finding, and Link Prediction.
Performing graph analysis can be a resource- and time-intensive process. In one approach, a graph database system stores graph data in a database and provides APIs that allow users to manipulate the graph data. However, the performance of such an approach is typically poor, especially for large graphs. This is because such an approach involves many relatively small-sized random data accesses. Contemporary persistent stores are very inefficient at such data access patterns.
In another approach, an analytic engine loads an entire graph from a file system into main memory of a machine and then executes graph analysis procedures in-memory, thereby avoiding random disk accesses. However, such an approach does not take into account data management aspects, which are necessary for real-world operations. Also, such an approach does not support concurrent users. Instead, it is assumed that all the hardware resources are exclusively used by a single user.
The approaches described in this section are approaches that could be pursued, but not necessarily approaches that have been previously conceived or pursued. Therefore, unless otherwise indicated, it should not be assumed that any of the approaches described in this section qualify as prior art merely by virtue of their inclusion in this section.